#ifndef MEASURE_H
#define MEASURE_H
/*****************************
该类为测量类，是所有测量项类的父类，
定义了测量项共有的属性和方法
*****************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "errorlog.h"

class Measure
{
public:
    Measure();
    virtual ~Measure(){}
    // 用于打开文件，当文件打开成功，则返回true和文件描述符；否则提示错误
    bool OpenFile(FILE *fp, char *fileName);
    int CommandPipe(const char *command,char *pResult, int size);
    void ExecuteCommand(const char *command, const char *fileName, char *pReslut, int size, int index);

protected:

    void GetFileResult(const char *fileName, char *pResult, int size, int index);
    //较小文件的默认长度
    int PROC_MAXBUF;
    //每个CPU的 /proc/stat文件长度
    int STAT_MAXBUF;
    //每一个CPU的/proc/cpuinfo文件长度，最多允许256个CPU
    int CPUINFO_MAXBUF;
    //每一个CPU的/proc/cpuinfo文件为20行
    const static int PROC_MAXLINES = 20 * 256 * sizeof(char *);
    //
//    int errorOn;
//    //
//    int errorLength;
//    int measureItem;
//    int reRead;
//    typedef enum
//    {
//        eCPUINFO, 0
//        eSTAT,    1
//        eVRESION, 2
//        eMEMINFO,3
//        eUPTIME,4
//        eLOADAVG,5
//        eVMSTAT,6
//        eNUMBER
//    }eMeasure;

//    FILE *fp;       //文件指针，所有的测量结果都来自于系统文件
//    char *fileName; //文件名称
//    int lines;      //文件内容行数
//    char *line[PROC_MAXLINES];//最大行数
//    char *buf;
//    int readInterval;//读取时间间隔
private:
    void normolize_string(int length, char *buffer);
};

//const int Measure::CPUINFO_MAXBUF;
//const int Measure::PROC_MAXBUF;
//const int Measure::STAT_MAXBUF;
//const int Measure::PROC_MAXLINES;
//const int Measure::errorOn;
//
//const int Measure::errorLength;
//const enum Measure::eMeasure;
#endif // MEASURE_H
